<html>
<head>
<title>Remake de Fruity Frank - Version 0.18</title>
<style type="text/css">
span {
	font-family: 'Courier New';
	font-size: 10pt;
	color: #000000;
}
.SpanClass0 {
	color: #808080;
}
.SpanClass3 {
	color: #008080;
}
.SpanClass5 {
	font-weight: bold;
	color: #0000FF;
}
.SpanClass7 {
	color: #808080;
}
.SpanClass10 {
	font-weight: bold;
	color: #000080;
}
.SpanClass11 {
}
</style>
</head>
<body bgcolor="#FFFFFF">
<h2>Remake (parcial) de Fruity Frank... 18 - Distintos niveles de juego</h2>
<p align="right">(Volver al <a href="doc.html">&iacute;ndice</a>) </p>


<p>El siguiente paso es tener distintos niveles (&quot;pantallas&quot;) en nuestro juego, de modo que cuando recojamos todos los &quot;premios&quot; del primer nivel, pasemos a un segundo nivel, y despu&eacute;s a un tercero, y as&iacute; sucesivamente.</p>

<p>En principio, la idea es sencilla: en vez de un &uacute;nico array para representar el mapa de un nivel, tendremos varios arrays, uno para cada para mapa (en realidad, ser&iacute;a una soluci&oacute;n m&aacute;s razonable tener un array multidimensional, pero no lo haremos as&iacute; por ahora):</p>

<pre><code>  string[] mapa1 = {
      &quot;XCXXMXXX XMCXXX&quot;,
      &quot;MXXCXXXX XMXCMM&quot;,
      &quot;XMCXXXXX XCXXXC&quot;,
      &quot;XXCXCXCX XXXXCX&quot;,
      &quot;               &quot;,
      &quot;XXMCXMXX XCXXXX&quot;,
      &quot;XXXXXXXX XXXMXX&quot;,
      &quot;XXXXXCXX XXXXXX&quot;,
      &quot;XXXXXCXX XXXCXX&quot;,
      &quot;XXXXXXXX CXCXXC&quot;
  };

  string[] mapa2 = {
      &quot;YCYYMY YYYMCYYY&quot;,
      &quot;MYYCYY YYYMYCMM&quot;,
      &quot;YMCYYY YYYCPYYC&quot;,
      &quot;YYCYCY CYYYYYCY&quot;,
      &quot;               &quot;,
      &quot;YYMCYM YYYCYYYY&quot;,
      &quot;YYYYYY YYYYYMYY&quot;,
      &quot;YYYPYC YYYYYYYY&quot;,
      &quot;YYPYYC YYYYYCYY&quot;,
      &quot;YYYYYY YYCYCYYC&quot;
  };

  string[] mapa3 = {
      &quot;ZCZZMZZZ ZPCZZM&quot;,
      &quot;MZZCZZPZ ZMZCMM&quot;,
      &quot;ZMCZZZZZ ZCPZZC&quot;,      
      &quot;               &quot;,
      &quot;ZZCZCZCZ ZZZZCZ&quot;,
      &quot;ZZMCZMZZ ZCZZZZ&quot;,
      &quot;ZZZZZZZZ ZZZMZZ&quot;,
      &quot;ZZZPZCMZ ZZZZZZ&quot;,
      &quot;ZZPZZCZZ ZZMCZZ&quot;,
      &quot;ZZZZZZZZ CZCZZC&quot;
  };</code></pre>  

<p>Tendremos un cuarto mapa, vac&iacute;o, que representar&aacute; en cada momento al nivel actual. Antes de empezar cada nivel, volcaremos el mapa de ese nivel en el mapa &quot;en uso&quot;. Lo podemos declarar con:</p>

<pre><code>  string[] mapa = new string[MAXFILAS];</code></pre>   

<p>Y podemos volcar los datos en &eacute;l as&iacute;:</p>

<pre><code>  for (i=0; i&lt;MAXFILAS; i++)
    mapa[i] = mapa1[i];</code></pre>

<p>Para saber cu&aacute;ndo pasar de un nivel a otro, podemos contar los &quot;premios&quot; que quedan por recoger. Si no quedan premios en el nivel actual, es el momento de pasar al siguiente nivel:</p> 

<pre><code>  // Si no quedan frutas, avanzo de nivel
  if (numFrutas == 0)
    siguienteNivel();</code></pre>

<p>Y esa funci&oacute;n &quot;siguienteNivel&quot; mostrar&iacute;a un aviso o una animaci&oacute;n, cargar&iacute;a el mapa del nuevo nivel en el mapa en uso, restaurar&iacute;a las posiciones iniciales de los enemigos y de nuestro personaje, etc.</p> 

<p>En nuestro caso, tenemos varios posibles mapas de nivel, as&iacute; que tendremos que asignar el que corresponda. Si fuera un array multidimensional, usar&iacute;amos como &iacute;ndice el n&uacute;mero de nivel; como no es nuestro caso, tendremos que usar varios &quot;if&quot; encadenados. De hecho, crearemos s&oacute;lo 3 niveles, pero haremos que se puedan jugar en m&aacute;s de 3 pantallas, haciendo que tras la tercera se vuelva a la primera, as&iacute;:</p>     

<pre><code>  // Por ahora solo hay tres niveles, as&iacute; que alterno:
  if (nivel % 3 == 1)
    for (i=0; i&lt;MAXFILAS; i++)
      mapa[i] = mapa1[i];
  else if (nivel % 3 == 2)
    for (i=0; i&lt;MAXFILAS; i++)
      mapa[i] = mapa2[i];
  else for (i=0; i&lt;MAXFILAS; i++)
      mapa[i] = mapa3[i];</code></pre>


<p>Como siempre, todo el fuente del proyecto est&aacute; en: <a href="http://code.google.com/p/fruityfrank"> code.google.com/p/fruityfrank</a></p>
<p align="right">(Volver al <a href="doc.html">&iacute;ndice</a>) </p>
</body>
</html>
